package cn.com.wxd.dao.website;

import java.util.List;
import java.util.Map;

import cn.com.wxd.entity.website.CatalogInfo;

/**
 * Title:栏目数据持久化类
 * Description:栏目数据持久化类
 * <p>
 * Company: wxd网站系统
 * Copyright: Copyright (c) 2015
 * All right reserved.
 * Created time: 2015年10月22日 下午5:23:38
 *
 * @author WangXuDong
 * @version 1.0
 */
public interface CatalogDao {
    /**
     * 根据参数获取栏目，参数为NULL则获取到所有的栏目
     *
     * @param param 相关查询条件参数
     *
     * @return 返回栏目列表
     */
    List<CatalogInfo> selectAllCatalog(Map<String, String> param);

    /**
     * 获取栏目根据ID
     *
     * @param id 栏目ID
     *
     * @return 栏目对象
     */
    CatalogInfo getCatalogById(int id);

    /**
     * 使用JDBC获取栏目，参数为相应的条件
     *
     * @param param 相关查询条件参数
     *
     * @return 返回栏目列表
     */
    List<CatalogInfo> selectAllCatalogOfJdbc(Map<String, String> param);

    /**
     * 获取根目录
     *
     * @return 栏目列表
     */
    List<CatalogInfo> selectRootCatalog();

    /**
     * 根据ID获取子栏目
     *
     * @param id 栏目ID
     *
     * @return 子栏目列表
     */
    List<CatalogInfo> selectSubCatalogById(int id);

    /**
     * 根据ID获取子栏目个数
     *
     * @param id 栏目ID
     *
     * @return 数量
     */
    int selectSubCatalogCount(int id);

    /**
     * 插入一条数据
     *
     * @param catalogInfo 栏目数据
     *
     * @return 是否成功
     */
    boolean insertCatalog(CatalogInfo catalogInfo);

    /**
     * 删除栏目
     *
     * @param id 栏目ID
     *
     * @return 是否成功
     */
    boolean deleteCatalog(int id);

    /**
     * 根据caid查询该栏目文章的数量
     *
     * @param caid
     *
     * @return
     */
    long selectArtCountByCaid(int caid);

    /**
     * 根据栏目标识号查栏目
     *
     * @param cataCode 栏目标识号
     *
     * @return 栏目对象
     */
    CatalogInfo selectCatalogBycode(String cataCode);

    /**
     * 获取目前最大的栏目排序号
     *
     * @return 排序号
     */
    int selectMaxOrderId();

    /**
     * 栏目的排序，替换两个栏目之间的排序号
     *
     * @param newOrdId 新排序号
     * @param oldOrdId 旧排序号
     *
     * @return
     */
    boolean updateCatalogOrder(int newOrdId, int oldOrdId);

}
